package cn.wolfcode.luowowo.website.web.controller;

import cn.wolfcode.luowowo.article.domain.*;
import cn.wolfcode.luowowo.article.query.StrategyCatalogQuery;
import cn.wolfcode.luowowo.article.query.TravelQuery;
import cn.wolfcode.luowowo.article.service.*;
import com.alibaba.dubbo.config.annotation.Reference;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.ArrayList;
import java.util.List;

/**
 * 前端目的
 */
@Controller
@RequestMapping("destination")
public class DestinationController {
    @Reference
    private IRegionService regionService;

    @Reference
    private IDestinationService destinationService;

    @Reference
    private IStrategyCatalogService strategyCatalogService;

    @Reference
    private IStrategyDetailService strategyDetailService;

    @Reference
    private ITravelService travelService;
    //首页
    @RequestMapping("")
    public String index(Model model){
        List<Region> regions = regionService.queryHotRegions();
        model.addAttribute("hotRegions",regions);
        return "destination/index";


    }

    @RequestMapping("/getHotDestByRegionId")
        public String getHotDestByRegionId(Model model,Long regionId){
        //查询所县关联的目的地
        List<Destination> list = destinationService.getDestByRegionId(regionId);
        List<Destination> leftDests = new ArrayList<>();
        List<Destination> rightDests=new ArrayList<>();
        if (list != null&& list.size()>0){
            int min = list.size()/2;
            for (int i=0;i<list.size();i++){
                if (i<min){
                    leftDests.add(list.get(i));
                }else{
                    rightDests.add(list.get(i));
                }
            }
        }
        model.addAttribute("leftDests",leftDests);
        model.addAttribute("rightDests",rightDests);
        model.addAttribute("regionId",regionId);
        return "destination/hotdestTpl";
    }


        @RequestMapping("/guide")
        public String guide(Model model,Long id){
        //toasts
        List<Destination> toasts = destinationService.getToasts(id);
        Destination dest = toasts.remove(toasts.size()-1);
        model.addAttribute("toasts",toasts);
        //dest
        model.addAttribute("dest",dest);

        //catalogs
        List<StrategyCatalog> catalogs = strategyCatalogService.getCatalogByDestId(id);
        model.addAttribute("catalogs",catalogs);

        //strategyDetails  点击量前3
       List<StrategyCatalog> list= strategyDetailService.queryStrategyTop3(id);
       model.addAttribute("strategyDetails",list);
        return "destination/guide";


    }

    @RequestMapping("/surveyPage")
    public String surveyPage(Model model, @ModelAttribute("qo") StrategyCatalogQuery qo){
        //qo
        List<Destination> toasts = destinationService.getToasts(qo.getDestId());
        Destination dest = toasts.remove(toasts.size()-1);
        //toasts
        model.addAttribute("toasts",toasts);


        //dest
        model.addAttribute("dest",dest);
        return "destination/survey";
    }

    @RequestMapping("/survey")
    public String survey(Model model,@ModelAttribute("qo") StrategyCatalogQuery qo){
        //catalogs
        List<StrategyCatalog> catalogs = strategyCatalogService.getCatalogByDestId(qo.getDestId());
        model.addAttribute("catalogs",catalogs);

        StrategyCatalog catalog = null;
        if (catalogs != null && catalogs.size()>0){
            //catalog
            for (StrategyCatalog c : catalogs){
                if (c.getId() == qo.getCatalogId()){
                    //页面中分类
                    catalog = c;
                    model.addAttribute("catalog",catalog);
                    break;
                }
            }
        }

        //detail
        if (catalog != null){
            List<StrategyDetail> details = catalog.getDetails();
            if (details!=null&& details.size()>0){
                //那第一个
                StrategyDetail detail =details.get(0);
                StrategyContent content = strategyDetailService.getContent(detail.getId());
                detail.setStrategyContent(content);
                model.addAttribute("detail",detail);

            }
        }
        return "destination/surveyTpl";
    }

    @RequestMapping("/travels")
    public String travels(Model model,@ModelAttribute("qo") TravelQuery qo){
        PageInfo pageInfo = travelService.query(qo);
        model.addAttribute("pageInfo",pageInfo);
        return "destination/travelTpl";
    }

}
